# -*- coding:utf-8 -*-
# 闭包结构
# 内层函数对外层函数的局部变量的使用，内层函数被称为闭包函数
# 闭指的是：该函数的内部函数
# 包指的是：内部函数在外部被引用


# 构成条件
# 1、函数嵌套
# 2、外部函数返回内部函数名
# 3、内部函数使用外部函数的变量

# 外层函数内的变量被称为自由变量，
# 这个自由变量和内层函数形成一种绑定关系，自由变量不会和全局变量产生冲突
# 闭包写法

# def external():          # 外部函数
#     var1 = "我是外部函数"
#     def inside():           # 内部函数
#         print(var1)
#     return inside           # 外部函数的返回值
#
#
# res = external()
# res()


#  装饰器
# 装饰器是 Python 的一个重要部分。简单地说：他们是不改变函数功能的基础上，
# 给函数增加一些功能。他们有助于让我们的代码更简短，也更有范儿。

# 函数可以作为参数进行传递

# def demo():
#     print("我是demo函数")
#
#
# def func(insert):
#     insert()
#
#
# func(demo)


# def demo():
#     return 10
#
#
# def func(demo):
#     print(demo+20)
#
#
# func(demo())
